package com.jk1123.reference.soft;

import java.lang.ref.SoftReference;
import java.util.ArrayList;
import java.util.List;

/**
 * @author huyoufu <https://github.com/huyoufu>
 * @TIME 2021-08-20 18:50
 * @description
 * -Xmx2m -Xms2m
 * -XX:+PrintGC 打印gc日志
 *
 * 一个对象 如果被软引用 那么在内存足够的情况  即时进行垃圾回收   那也不会回收掉!!!!
 * 内存比较充足的情况 有一些常用可以被缓存
 * 做 jvm内置高速缓存
 *
 *
 */
public class SoftTest {
    public static void main(String[] args) throws InterruptedException {

        List<SoftReference> list=new ArrayList();
        for (int i = 0; i < 100; i++) {
            //对象
            byte[] buff=new byte[1024*1024];
            //使用软引用包裹
            list.add(new SoftReference<>(buff));

            //System.gc();

            System.out.println("第"+(i)+"次");
        }

        for (int i = 0; i < 100; i++) {

            System.out.println(list.get(i).get());
        }





    }
}
